package com.zb.utils;

import java.util.regex.Pattern;

/**
 * 校验工具类
 * @Author WEN
 * @Date 2023/7/8 0008
 **/
public class VerificUtil {
    /**
     * 手机号正则
     */
    public static final String REGEX_PHONE = "^1[3|4|5|6|7|8|9]\\d{9}$";

    /**
     * 座机正则
     */
    public static final String REGEX_TELEPHONE = "^((\\d{3,4}-)|(\\d{3,4}))?\\d{7,8}$";

    /**
     * 密码类正则：最短6位，最长16位 {6,16}
     *  必须包含1个数字
     *  必须包含1个大小写字母
     *  必须包含1个特殊字符
     */
    public static final String PASSWORD_RULE = "^.*(?=.{6,16})(?=.*\\d)(?=.*[A-Za-z]{1,})(?=.*[!@#$%^&*?\\(\\)]).*$";

    /**
     *  浮点数规则：>0 的4位正数数，或 >0 的4位正整数，且保留两位小数
     */
    public static final String FLOATING_NUMBER_4_2 = "^([1-9]\\d{0,3})|([1-9]\\d{0,3})(\\.[0-9]{1,2})|0\\.([0-9]{1,2})$";

    /**
     *  注
     *    1.浮点数规则：>=0 的8位正数数，或 >=0 的8位正整数，且保留两位小数，总长度为11位
     *    2.多数用于金额
     *
     */
    public static final String FLOATING_NUMBER_10_2 = "^0$|^[1-9]\\d{0,7}$|^[1-9]\\d{0,7}\\.\\d{1,2}$|^0\\.\\d{1,2}$";

    /**
     * 字段类型：1-文本，2-多行文本，3-单选，4-多选，5-多图，6-附件，7-视频，8-评分
     */
    public static final String FIELD_TYPE = "^(1|2|3|4|5|6|7|8)$";

    /**
     * 校验手机号
     * @param phone
     * @return
     */
    public static boolean phoneVerific(String phone) {
        return Pattern.matches(REGEX_PHONE, phone);
    }

    /**
     * 校验座机号
     * @param telephone
     * @return
     */
    public static boolean telephoneVerific(String telephone) {
        return Pattern.matches(REGEX_PHONE, telephone);
    }

    /**
     * 密码规则校验
     * @param password
     * @return
     */
    public static boolean passwordVerific(String password) {
        return Pattern.matches(PASSWORD_RULE, password);
    }


    public static void main(String[] args) {
        String reg = "^[1-9]\\d{0,5}$";
        System.out.println(Pattern.matches(reg, "0"));
        System.out.println(Pattern.matches(reg, "1"));
        System.out.println(Pattern.matches(reg, "9"));
        System.out.println(Pattern.matches(reg, "90"));
        System.out.println(Pattern.matches(reg, "96666"));
        System.out.println(Pattern.matches(reg, "966666"));
        System.out.println(Pattern.matches(reg, "9666666"));
    }
}
